package com.scott.ch020;

/**
 * @author 黄后林
 * @version 1.0
 * @note
 * @date 2022-05-02 11:23:08
 */
public class Bubble {


    /**
     * 方法描述: 对数组内的元素进行排序
     * @author: 黄后林
     * @date: 2022/5/2 11:28
     * @param a
     */
    public static void sort(Comparable[] a){

        //循环6次
        for(int outer=0;outer<=a.length-2;outer++){

            for(int inner=0;inner<a.length-1-outer;inner++){
                Comparable before = a[inner];
                Comparable after  = a[inner + 1];
                if(greater(before,after)){
                    //如果前面的元素比后面的元素大 就交换位置
                    exchange(a,inner,inner+1);
                }
            }

        }

    }

    /**
     * 方法描述: 判断v是否大于w
     * @author: 黄后林
     * @date: 2022/5/2 11:23 
     * @param v
     * @param w 
     * @return boolean
     */
    private static boolean greater(Comparable v,Comparable w){

        int rs = v.compareTo(w);

        if(rs>=0){
            return true;
        }else{
            return false;
        }

    }

    /**
     * 方法描述: 交换a数组中、索引i和索引j处的值
     * @author: 黄后林
     * @date: 2022/5/2 11:26
     * @param a
     * @param i
     * @param j
     */
    private static void exchange(Comparable[] a,int i,int j){

        Comparable temp;

        temp=a[i];
        a[i]=a[j];
        a[j]=temp;
    }
}
